﻿using PHMEE.ToolKits;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;

namespace PHMEE
{
    public interface IVesselManager
    {
        public Task<Vessel> CreateVessel(VesselEnum vesselType, Guid fleetId, string name,string nameen, string imo);

        public (Expression<Func<Vessel, bool>> Expression, string LocalizedName) GetVesselExpression(string name, string nameen,Guid fleetId);

        public Dictionary<int, object> GetVesselTypes();

        public Dictionary<int, object> GetVesselFlowMeterModes();

        public Dictionary<int, object> GetUnitTypes();

        public Dictionary<int, object> GetEquipmentTypes();

        public Dictionary<int, object> GetEquipmentRotationModes();

        public Dictionary<int, object> GetEquipmentConnectModes();

        public Dictionary<int, object> GetEquipmentSupportFlexibilityModes();

        public Dictionary<int, object> GetEquipmentBearingTypes();

        public Dictionary<int, object> GetComponentTypes();

        public Task<(Vessel, Unit)> GetUnitRelation(Guid unitId);

        public Task<(Vessel, Unit, Equipment)> GetEquipmentRelation(Guid equipmentId);

        public Task<(Vessel, Unit, Equipment, Component)> GetComponentRelation(Guid componentId);

        public Task<List<VesselTree>> GetBaseInfoTree(bool includePoints);

        public Dictionary<int, object> GetBaseInfoLevelTags(string ownerType);
    }
}
